OpenGL ES (Open Graphics Language for Embedded System) is a cross-platform API for rendering 2D and 3D graphics on an embedded system. For a system that is equipped with an OpenGL ES compatible graphics processing unit (GPU), a graphic application may take advantage of the GPU acceleration by using OpenGL ES commands to perform its graphic tasks. For a system that does not have a GPU, the graphic application may be forced to utilize the central processing unit (CPU) to process these OpenGL ES commands. As a result, the performance of a graphic application in a system that contains a GPU is generally faster than in a system that does not contain a GPU. In addition, OpenGL ES 2.0 standard may require mandatory GPU support. Thus, a graphic application that is programmed based on the OpenGL ES 2.0 standard may not be executable in an embedded system that does not have a GPU.
A virtual machine (VM) may be configured to simulate an embedded system that supports an OpenGL ES application. An OpenGL ES application executing in the VM may issue OpenGL ES commands to the VM. However, the VM, which is a software emulating a physical machine, may not have a direct access to a GPU. In this case, the VM may provide OpenGL ES supports based on software implementations. Still, the software-implemented OpenGL ES supports may require a lot of CPU throughputs, which may slow down the application's performance in the VM significantly. Alternatively, the VM may be implemented with a virtualized GPU, or have a virtualized GPU driver which can interface with a physical GPU. However, these solutions may not be flexible as the VM may have to support different GPUs for different embedded systems.